/*
 * F_Command_Consola.c
 *
 *  Created on: 04/11/2011
 *      Author: tacho
 */

#include "../../headers/GlobalHeaderPFS.h"
#include "../../headers/Constantes_PFS.h"

extern mbr bootSector;

/*-------------------------------------------------------------------------*/
/**
 Muestra los primeros 20 clusters pertenecientes a un archivo
 que se especifica mediante su PATH.
 */
void comandofinfo(char * buffer){
//	if((strlen(buffer))<=6){
//		printf("Falta ruta ");
//		return ;
//	}
	char * path= (char *) malloc(strlen(buffer)-strlen("finfo"));
	tDirectoryEntries entradasDelArchivo;
	memcpy(path,buffer+6,strlen(buffer)-strlen("finfo"));
	uint8_t loEncontro = obtenerEntradaAPartirDePATH(path,&entradasDelArchivo);
				if(loEncontro){
				tnodoEntrada lista;
				tnodoEntrada p;
				uint32_t valor=0;
				crearCadenaClusterAPartir((obtenerDireccionPrimerCluster(&entradasDelArchivo.directoryEntry)),&lista);
				printf("\n");
				printf("Clusters: \n");
					p = lista;
					while((p != NULL)&&(valor<=20)){
					if(p->entrada==0){
					puts("0 clusters asociados");
					return;
					}
					printf("%d,  ",p->entrada);
					p = p->sgte;
					valor++;
							  }
					while(lista!=NULL){
					p=lista;
					lista = lista->sgte;
					free(p);
				}
					 printf("\n");
			} else{
				printf("Ruta no existente");
			}
}

/*-------------------------------------------------------------------------*/
/**
  Imprime cierta información especifica del sistema.
 */
void comandofsinfo(){
	printf("\n");
	printf("Cantidad De Clusters Ocupados: %d \n",obtenerCantidadDeClustersUsados());
	printf("Cantidad De Clusters Libres: %d \n",obtenerCantidadDeClusterLibres());
	printf("Tamaño de un sector: %d b \n", bootSector.bytesPorSector);
	printf("Tamaño de un cluster: %d b \n", bootSector.bytesPorSector*bootSector.sectoresPorCluster);
	printf("Tamaño de la FAT: %d kb \n", (bootSector.sectoresPorFat*bootSector.bytesPorSector)/KILOBYTES);
	printf("\n");
}
/*-------------------------------------------------------------------------*/
